8130 IF LEFT$(IN$,1) = CHR$(5) AND (ALGT >0) THEN 8200
8135 IF IN$ = "#" THEN GOTO 8900
8140 IF LEN(IN$) = 0 THEN 8120
8160 ALGT = ALGT +1:ADD$(ALGT) = IN$
8170 GOTO 8120
8198 REM ***** SELECTION *****
8199 REM ******* SORT ********
8200 PM$(1) = " NOW SORTING AND MERGING.": CALL -198: GOSUB 800
8210 FOR I = 1 TO ALGT -1
8215 MIN$ = ADD$(I):MLOC = I:S = 0
8220 FOR J = I +1 TO ALGT
8225 IF ADD$(J) = >MIN$ THEN 8230
8227 MIN$ = ADD$(J):MLOC = J:S = 1
8230 NEXT J
8235 IF S = 0 THEN 8250
8240 ADD$(MLOC) = ADD$(I):ADD$(I) = MIN$: REM SWITCH.
8250 NEXT I
8260 PM$(1) = "SORT DONE. NOW MERGING WITH FILE.": CALL -198: GOSUB 800
8300 IF MN = 7 THEN 8500: REM MERGE IF ADD SELECTED
8310 FILE$(0) = FLNAME$: REM ELSE PUT ADD$ INTO FILE$ DIRECTLY,IE ADD CALLED BY 'CREATE' OR 'FIRST ENTRY'.
8320 I = 1:J = 0:D = 0: REM FILE$,ADD$ INDICES & DUPL CNTR.
8330 I = I +1:J = J +1
8340 IF J >ALGT THEN 8380
8350 FILE$(I) = ADD$(J)
8360 IF FILE$(I) < >ADD$(J +1) THEN 8330: REM CKS FOR NO MORE THAN 1 DUPL ENTRY IN ADD$.
8370 J = J +1:D = D +1: GOTO 8330
8380 FLGT = ALGT -D: GOTO 8700: REM UPDATE FILE$ TO DISC.
8498 REM ****** MERGE ******
8500 I = 2:J = 0:K = 1: REM INDICES FOR FILE$,ADD$ &MERGE$ RESP.
8503 D = -1: REM DUPLICATE COUNTER
8505 J = J +1:D = D +1
8510 IF FILE$(I) >ADD$(J) THEN 8550
8515 IF FILE$(I) = ADD$(J) THEN 8505: REM DUPL BET ADD$ & FILE$.
8517 IF ADD$(J) = ADD$(J +1) THEN 8505
8520 MERGE$(K) = FILE$(I):K = K +1:I = I +1
8530 GOTO 8600: REM CK IF FILE OR ADD ARE DONE
8549 REM ALTERNATIVELY PUT ADD$ ELEMENT INTO FILE$
8550 IF ADD$(J) = ADD$(J +1) THEN 8505: REM CK FOR DUPL WITHIN ADD$ FIRST.
8560 MERGE$(K) = ADD$(J):K = K +1:J = J +1
8599 REM ***CK IF DONE***
8600 IF I < = FLGT +1 THEN 8620: REM FILE DONE?
8610 X = J: FOR J = X TO ALGT:MERGE$(K) = ADD$(J):K = K +1: NEXT J: GOTO 8650: REM YES, FINISH REST OF ADD$.
8620 IF J < = ALGT THEN 8510: REM NO. ADD$ DONE?
8630 Y = I: FOR I = Y TO FLGT +1:MERGE$(K) = FILE$(I):K = K +1: NEXT : REM YES,PUT REST OF FILE$ INTO MERGE$
8649 REM ***NOW TRANSFER MERGE$ INTO FILE$***
8650 FLGT = FLGT +ALGT -D
8660 FOR I = 2 TO FLGT +1:FILE$(I) = MERGE$(I -1): NEXT I
8697 REM
8698 REM UPDAT FILE$ TO DISC:
8699 REM
8700 FILE$(1) = STR$(FLGT)
8710 PM$(1) = "MERGE DONE. NOW UPDATING FILE TO DISC.": CALL -198: GOSUB 800
8720 GOSUB 9500: REM WRITE A FILE.
8740 IN$ = "": RETURN : REM FOR CREATE LN#6070
8800 HOME : VTAB 5: CALL -198: FLASH : PRINT "NO FILES IN MEMORY.": NORMAL : PRINT : PRINT "RETURNING TO MENU...SELECT MENU OPTIONS": PRINT "'A' AND 'D'."
8810 FOR D = 1 TO 3000: NEXT D: RETURN
8900 PRINT "# ITEMS ENTERED SO FAR = ";ALGT: GOTO 8120
8997 REM
8998 REM ****** DELETE ******
8999 REM
9000 IF FLNAME$ = "NONE" THEN 9480
9005 PM$(1) = MN$(10): GOSUB 800: HOME
9010 PRINT "CURRENT MENU MODE DELETES ITEMS": PRINT "FROM THE FILE CURRENTLY IN MEMORY, ": PRINT FLNAME$;". DO YOU WANT TO": PRINT "CONTINUE (C) OR RETURN TO MENU (M)?"
9020 GET IN$
9022 IF IN$ = "C" THEN 9100
9024 IF IN$ = "M" THEN RETURN
9026 GOTO 9020
9098 REM ****ITEM INPUT****
9100 HOME :DLGT = 0
9110 PM$(1) = "ENTER ITEM -- OR CTL/E TO EXECUTE.": GOSUB 800
9120 INPUT IN$:IN$ = LEFT$(IN$,20)
9130 IF LEFT$(IN$,1) = CHR$(5) AND (DLGT >0) THEN 9200
9135 IF LEN(IN$) = 0 THEN 9120
9140 DLGT = DLGT +1:DLE$(DLGT) = IN$: GOTO 9120
9198 REM ***MATCH & NUL***
9199 REM ASSUMES NO DUPL IN FILE$.
9200 FOR I = 1 TO DLGT: FOR J = 2 TO FLGT +1
9210 IF FILE$(J) < >DLE$(I) THEN 9230
9220 FILE$(J) = "": GOTO 9240
9230 NEXT J
9240 NEXT I
9298 REM ***MOVE INTO MERGE$***
9300 J = 0: REM MERGE$ INDEX
9310 FOR I = 2 TO FLGT +1
9320 IF FILE$(I) = "" THEN 9330
9325 J = J +1:MERGE$(J) = FILE$(I)
9330 NEXT I
9398 REM MOVE BACK INTO FILE$
9400 FLGT = J: REM NATURALLY!
9410 FOR I = 2 TO FLGT +1:FILE$(I) = MERGE$(I -1): NEXT I